SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE FUNCTION [dbo].[FU_CONV_MONE]      
/*------------------------------------------------------*/        
/*---- Empresa           : OFISIS S.A.              ----*/        
/*---- Cliente           : OFISIS S.A.              ----*/        
/*---- Nombre FU         : FU_CONV_MONE             ----*/        
/*---- Desarrollado por  : OFISIS                   ----*/        
/*---- Fecha Creaci>n    : 13/01/2005               ----*/        
/*---- Base de Datos     : SLQ Server               ----*/        
/*---- Versi>n           : 8.0                      ----*/        
/*------------------------------------------------------*/        
/*---- MODIFICADO POR    : PDGV                     ----*/  
/*---- FECHA MODIF       : 14/01/2005               ----*/  
/*---- DETALLE MODIF     : SE ADECUO PROC DE CONV   ----*/  
/*---- PARA REPORTE DE INV. Y BALANCES DETALLADO    ----*/  
/*------------------------------------------------------*/        
/*--- Drop PROCEDURE FU_CONV_MONE                   ----*/      
/*--- Grant All on FU_CONV_MONE To Public           ----*/      
/*--- FU_CONV_MONE '01','LIB',1,'PAC','COM',0.64,'2002/11/15',00000,0 ONV OUTPUT---*/      
/*--- FU_CONV_MONE '01','SOL',1,'PAC','COM',1,'2003/02/07',1500,0  ONV OUTPUT---*/      
/*------------------------------------------------------*/        
  (---@ISCO_EMPR            TD_VC_002,      
  @ISCO_MONE_ORIG TD_VC_003,      
  @ISCO_MONE_DEST       TD_VC_003,      
  @ISTI_CAMB         TD_VC_003,      
  @INFA_CAMB            TD_NU_015_006,       
  @INIM_ORIG   TD_NU_016_004,      
  @INNU_ANNO            TD_IN_004_ANNO,      
  @INNU_MESE            TD_IN_002_MESE)      
--- @ISTI_ORIG            TD_VC_001, -- Invocado por (A)pt o (P)rocedure      
  ---@ONIM_CONV            TD_NU_016_004 OUTPUT        
      
  RETURNS NUMERIC(16,4)        
      
AS      
Begin      
  Declare      
  @VSCO_MON1       TD_VC_003,      
  @VSCO_MONE_BAS1  TD_VC_003,      
  @VSTI_OPE1       TD_VC_001,      
  @VSCO_MON2       TD_VC_003,      
  @VSCO_MONE_BAS2  TD_VC_003,      
  @VSTI_OPE2       TD_VC_001,      
  @VNFA_CAMB_0002  TD_NU_015_006,      
  @VNIM_CONV       TD_NU_016_004      
      
  ---- Verificamos si ambas monenas son iguales      
  If @ISCO_MONE_ORIG !=  @ISCO_MONE_DEST      
  Begin      
    ----  Recupero monedas      
    Select @VSCO_MON1 = CO_MON1,      
    @VSCO_MONE_BAS1 = CO_MONE_BAS1,      
           @VSTI_OPE1 = TI_OPE1,      
    @VSCO_MON2 = CO_MON2,      
           @VSCO_MONE_BAS2 = CO_MONE_BAS2,      
    @VSTI_OPE2 = TI_OPE2      
    From   TMCONV_MONE       
    Where  CO_MONE_ORIG   = @ISCO_MONE_ORIG      
    And    CO_MONE_DEST   = @ISCO_MONE_DEST       
      
    ---- Solo convierte para Paso 1      
    If IsNull(Rtrim(@VSCO_MON2), '') = '' And @INIM_ORIG <> 0 and @INFA_CAMB > 0      
    Begin      
      If @VSTI_OPE1 = 'M'      
        Select @VNIM_CONV  =  Round(@INIM_ORIG * @INFA_CAMB, 2)      
      Else      
        Select @VNIM_CONV  =  Round(@INIM_ORIG / @INFA_CAMB, 2)      
    End      
      
    ---- Convierte cuando tiene Paso 1 y Paso 2      
    If IsNull(Rtrim(@VSCO_MON1), '') != '' and IsNull(Rtrim(@VSCO_MON2), '') != '' and @INIM_ORIG <> 0 and @INFA_CAMB > 0       
    Begin      
            
      If @VSTI_OPE1 = 'M'      
        Select @VNIM_CONV  =  Round(@INIM_ORIG * @INFA_CAMB, 2)      
      Else      
        Select @VNIM_CONV  =  Round(@INIM_ORIG / @INFA_CAMB, 2)      
      
      Select @VNFA_CAMB_0002 =       
           Case  @ISTI_CAMB      
             When  'COM' Then FA_CAMB_CMPR      
             Else   FA_CAMB_VNTA      
    End       
      From    TCFACT_CIER      
      Where   CO_MONE = @VSCO_MON2      
      And     NU_ANNO = @INNU_ANNO      
      And     NU_MESE = @INNU_MESE      
      
      If IsNull(@VNFA_CAMB_0002,0) > 0      
      Begin      
        If @VSTI_OPE2 = 'M'      
          Select @VNIM_CONV  =  Round(@VNIM_CONV * @VNFA_CAMB_0002, 2)      
        Else      
          Select @VNIM_CONV  =  Round(@VNIM_CONV / @VNFA_CAMB_0002, 2)      
      End       
      Else      
        Select @VNIM_CONV = 0      
      End      
    ---- Si importe original es 0      
    If @INIM_ORIG = 0      
      Select @VNIM_CONV = 0      
    End      

  If @ISCO_MONE_ORIG =  @ISCO_MONE_DEST      
     Select @VNIM_CONV  =  Round(@INIM_ORIG, 2)      

Return @VNIM_CONV      

End
/*----------------fin Funcion---------------------------*/      


GO
